#include <stdio.h>
#include <unistd.h>
#include "modbus.h"

void gateway_modbus_test(void)
{
    modbus_t *ctx = modbus_new_rtu("/dev/ttyS2", 9600, 'N', 8, 1);
    if (ctx == NULL) {
        fprintf(stderr, "Failed to create Modbus context\n");
        return -1;
    }
    else{
        printf("Create modbus context success!\n");
    }

    int slave_id = 1;  // 根据实际设备修改
    if (modbus_set_slave(ctx, slave_id) == -1) {
        modbus_free(ctx);
        return -1;
    }

    modbus_connect(ctx);
    uint16_t reg[10];
    uint8_t temp[2];

    while(1)
    {
        // 读取寄存器示例
        modbus_read_registers(ctx, 0, 10, reg);
        
        for(int i = 0;i < 10; i++)
        {
            temp[0] = (uint8_t)(reg[i] >> 8);
            temp[1] = (uint8_t)reg[i];

            printf("%02X%02X",temp[0],temp[1]);
            printf(" ");
            
        }

        printf("\r\n");
        usleep(1000*1000);
    }
    
    modbus_close(ctx);
    modbus_free(ctx);
}

